package com.bdqn.sys.service.impl;

import com.bdqn.sys.entity.Role;
import com.bdqn.sys.dao.RoleMapper;
import com.bdqn.sys.service.RoleService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.io.Serializable;
import java.util.Set;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author KazuGin
 * @since 2020-05-04
 */
@Service
public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements RoleService {

    @Resource
    private RoleMapper roleMapper;

    @Override
    public boolean removeById(Serializable id) {
        //删除角色权限关系的数据，毕竟如果只删除角色而不删除用户user下拥有的这个角色数据以及角色权限表中sys_role_permission数据的话这个数据冗余会越来越多的
        roleMapper.deleteRoleAndPermission(id);
        //这个是user用户下拥有role数据要删除
        roleMapper.deleteRoleAndUser(id);
        //删除角色用户表关系
        return super.removeById(id);
    }

    @Override
    public boolean saveRolePermission(Integer rid, String ids) {
        try {
            //先删除当前角色原有的角色权限关系
            roleMapper.deleteRoleAndPermission(rid);
            //拆分权限ID数组
            String[] idsArr = ids.split(",");
            //循环调用
            for (int i = 0; i < idsArr.length; i++) {
                //调用新增的方法
                roleMapper.insertRolePermission(rid,idsArr[i]);
            }
            //成功
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            //失败
            return false;
        }
    }

    @Override
    public Set<Integer> findRolePermissionIdByRoleId(Integer roleId) {


        return roleMapper.findRolePermissionIdByRoleId(roleId);
    }


}
